home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libcruft / lapack / zlarfx.f < prev    next >
Text File  |  1996-07-19  |  20KB  |  643 lines

  1.       SUBROUTINE ZLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
  2. *
  3. *  -- LAPACK auxiliary routine (version 2.0) --
  4. *     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
  5. *     Courant Institute, Argonne National Lab, and Rice University
  6. *     September 30, 1994
  7. *
  8. *     .. Scalar Arguments ..
  9.       CHARACTER          SIDE
  10.       INTEGER            LDC, M, N
  11.       COMPLEX*16         TAU
  12. *     ..
  13. *     .. Array Arguments ..
  14.       COMPLEX*16         C( LDC, * ), V( * ), WORK( * )
  15. *     ..
  16. *
  17. *  Purpose
  18. *  =======
  19. *
  20. *  ZLARFX applies a complex elementary reflector H to a complex m by n
  21. *  matrix C, from either the left or the right. H is represented in the
  22. *  form
  23. *
  24. *        H = I - tau * v * v'
  25. *
  26. *  where tau is a complex scalar and v is a complex vector.
  27. *
  28. *  If tau = 0, then H is taken to be the unit matrix
  29. *
  30. *  This version uses inline code if H has order < 11.
  31. *
  32. *  Arguments
  33. *  =========
  34. *
  35. *  SIDE    (input) CHARACTER*1
  36. *          = 'L': form  H * C
  37. *          = 'R': form  C * H
  38. *
  39. *  M       (input) INTEGER
  40. *          The number of rows of the matrix C.
  41. *
  42. *  N       (input) INTEGER
  43. *          The number of columns of the matrix C.
  44. *
  45. *  V       (input) COMPLEX*16 array, dimension (M) if SIDE = 'L'
  46. *                                        or (N) if SIDE = 'R'
  47. *          The vector v in the representation of H.
  48. *
  49. *  TAU     (input) COMPLEX*16
  50. *          The value tau in the representation of H.
  51. *
  52. *  C       (input/output) COMPLEX*16 array, dimension (LDC,N)
  53. *          On entry, the m by n matrix C.
  54. *          On exit, C is overwritten by the matrix H * C if SIDE = 'L',
  55. *          or C * H if SIDE = 'R'.
  56. *
  57. *  LDC     (input) INTEGER
  58. *          The leading dimension of the array C. LDA >= max(1,M).
  59. *
  60. *  WORK    (workspace) COMPLEX*16 array, dimension (N) if SIDE = 'L'
  61. *                                            or (M) if SIDE = 'R'
  62. *          WORK is not referenced if H has order < 11.
  63. *
  64. *  =====================================================================
  65. *
  66. *     .. Parameters ..
  67.       COMPLEX*16         ZERO, ONE
  68.       PARAMETER          ( ZERO = ( 0.0D+0, 0.0D+0 ),
  69.      $                   ONE = ( 1.0D+0, 0.0D+0 ) )
  70. *     ..
  71. *     .. Local Scalars ..
  72.       INTEGER            J
  73.       COMPLEX*16         SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
  74.      $                   V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
  75. *     ..
  76. *     .. External Functions ..
  77.       LOGICAL            LSAME
  78.       EXTERNAL           LSAME
  79. *     ..
  80. *     .. External Subroutines ..
  81.       EXTERNAL           ZGEMV, ZGERC
  82. *     ..
  83. *     .. Intrinsic Functions ..
  84.       INTRINSIC          DCONJG
  85. *     ..
  86. *     .. Executable Statements ..
  87. *
  88.       IF( TAU.EQ.ZERO )
  89.      $   RETURN
  90.       IF( LSAME( SIDE, 'L' ) ) THEN
  91. *
  92. *        Form  H * C, where H has order m.
  93. *
  94.          GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
  95.      $           170, 190 )M
  96. *
  97. *        Code for general M
  98. *
  99. *        w := C'*v
  100. *
  101.          CALL ZGEMV( 'Conjugate transpose', M, N, ONE, C, LDC, V, 1,
  102.      $               ZERO, WORK, 1 )
  103. *
  104. *        C := C - tau * v * w'
  105. *
  106.          CALL ZGERC( M, N, -TAU, V, 1, WORK, 1, C, LDC )
  107.          GO TO 410
  108.    10    CONTINUE
  109. *
  110. *        Special code for 1 x 1 Householder
  111. *
  112.          T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
  113.          DO 20 J = 1, N
  114.             C( 1, J ) = T1*C( 1, J )
  115.    20    CONTINUE
  116.          GO TO 410
  117.    30    CONTINUE
  118. *
  119. *        Special code for 2 x 2 Householder
  120. *
  121.          V1 = DCONJG( V( 1 ) )
  122.          T1 = TAU*DCONJG( V1 )
  123.          V2 = DCONJG( V( 2 ) )
  124.          T2 = TAU*DCONJG( V2 )
  125.          DO 40 J = 1, N
  126.             SUM = V1*C( 1, J ) + V2*C( 2, J )
  127.             C( 1, J ) = C( 1, J ) - SUM*T1
  128.             C( 2, J ) = C( 2, J ) - SUM*T2
  129.    40    CONTINUE
  130.          GO TO 410
  131.    50    CONTINUE
  132. *
  133. *        Special code for 3 x 3 Householder
  134. *
  135.          V1 = DCONJG( V( 1 ) )
  136.          T1 = TAU*DCONJG( V1 )
  137.          V2 = DCONJG( V( 2 ) )
  138.          T2 = TAU*DCONJG( V2 )
  139.          V3 = DCONJG( V( 3 ) )
  140.          T3 = TAU*DCONJG( V3 )
  141.          DO 60 J = 1, N
  142.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
  143.             C( 1, J ) = C( 1, J ) - SUM*T1
  144.             C( 2, J ) = C( 2, J ) - SUM*T2
  145.             C( 3, J ) = C( 3, J ) - SUM*T3
  146.    60    CONTINUE
  147.          GO TO 410
  148.    70    CONTINUE
  149. *
  150. *        Special code for 4 x 4 Householder
  151. *
  152.          V1 = DCONJG( V( 1 ) )
  153.          T1 = TAU*DCONJG( V1 )
  154.          V2 = DCONJG( V( 2 ) )
  155.          T2 = TAU*DCONJG( V2 )
  156.          V3 = DCONJG( V( 3 ) )
  157.          T3 = TAU*DCONJG( V3 )
  158.          V4 = DCONJG( V( 4 ) )
  159.          T4 = TAU*DCONJG( V4 )
  160.          DO 80 J = 1, N
  161.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  162.      $            V4*C( 4, J )
  163.             C( 1, J ) = C( 1, J ) - SUM*T1
  164.             C( 2, J ) = C( 2, J ) - SUM*T2
  165.             C( 3, J ) = C( 3, J ) - SUM*T3
  166.             C( 4, J ) = C( 4, J ) - SUM*T4
  167.    80    CONTINUE
  168.          GO TO 410
  169.    90    CONTINUE
  170. *
  171. *        Special code for 5 x 5 Householder
  172. *
  173.          V1 = DCONJG( V( 1 ) )
  174.          T1 = TAU*DCONJG( V1 )
  175.          V2 = DCONJG( V( 2 ) )
  176.          T2 = TAU*DCONJG( V2 )
  177.          V3 = DCONJG( V( 3 ) )
  178.          T3 = TAU*DCONJG( V3 )
  179.          V4 = DCONJG( V( 4 ) )
  180.          T4 = TAU*DCONJG( V4 )
  181.          V5 = DCONJG( V( 5 ) )
  182.          T5 = TAU*DCONJG( V5 )
  183.          DO 100 J = 1, N
  184.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  185.      $            V4*C( 4, J ) + V5*C( 5, J )
  186.             C( 1, J ) = C( 1, J ) - SUM*T1
  187.             C( 2, J ) = C( 2, J ) - SUM*T2
  188.             C( 3, J ) = C( 3, J ) - SUM*T3
  189.             C( 4, J ) = C( 4, J ) - SUM*T4
  190.             C( 5, J ) = C( 5, J ) - SUM*T5
  191.   100    CONTINUE
  192.          GO TO 410
  193.   110    CONTINUE
  194. *
  195. *        Special code for 6 x 6 Householder
  196. *
  197.          V1 = DCONJG( V( 1 ) )
  198.          T1 = TAU*DCONJG( V1 )
  199.          V2 = DCONJG( V( 2 ) )
  200.          T2 = TAU*DCONJG( V2 )
  201.          V3 = DCONJG( V( 3 ) )
  202.          T3 = TAU*DCONJG( V3 )
  203.          V4 = DCONJG( V( 4 ) )
  204.          T4 = TAU*DCONJG( V4 )
  205.          V5 = DCONJG( V( 5 ) )
  206.          T5 = TAU*DCONJG( V5 )
  207.          V6 = DCONJG( V( 6 ) )
  208.          T6 = TAU*DCONJG( V6 )
  209.          DO 120 J = 1, N
  210.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  211.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J )
  212.             C( 1, J ) = C( 1, J ) - SUM*T1
  213.             C( 2, J ) = C( 2, J ) - SUM*T2
  214.             C( 3, J ) = C( 3, J ) - SUM*T3
  215.             C( 4, J ) = C( 4, J ) - SUM*T4
  216.             C( 5, J ) = C( 5, J ) - SUM*T5
  217.             C( 6, J ) = C( 6, J ) - SUM*T6
  218.   120    CONTINUE
  219.          GO TO 410
  220.   130    CONTINUE
  221. *
  222. *        Special code for 7 x 7 Householder
  223. *
  224.          V1 = DCONJG( V( 1 ) )
  225.          T1 = TAU*DCONJG( V1 )
  226.          V2 = DCONJG( V( 2 ) )
  227.          T2 = TAU*DCONJG( V2 )
  228.          V3 = DCONJG( V( 3 ) )
  229.          T3 = TAU*DCONJG( V3 )
  230.          V4 = DCONJG( V( 4 ) )
  231.          T4 = TAU*DCONJG( V4 )
  232.          V5 = DCONJG( V( 5 ) )
  233.          T5 = TAU*DCONJG( V5 )
  234.          V6 = DCONJG( V( 6 ) )
  235.          T6 = TAU*DCONJG( V6 )
  236.          V7 = DCONJG( V( 7 ) )
  237.          T7 = TAU*DCONJG( V7 )
  238.          DO 140 J = 1, N
  239.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  240.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  241.      $            V7*C( 7, J )
  242.             C( 1, J ) = C( 1, J ) - SUM*T1
  243.             C( 2, J ) = C( 2, J ) - SUM*T2
  244.             C( 3, J ) = C( 3, J ) - SUM*T3
  245.             C( 4, J ) = C( 4, J ) - SUM*T4
  246.             C( 5, J ) = C( 5, J ) - SUM*T5
  247.             C( 6, J ) = C( 6, J ) - SUM*T6
  248.             C( 7, J ) = C( 7, J ) - SUM*T7
  249.   140    CONTINUE
  250.          GO TO 410
  251.   150    CONTINUE
  252. *
  253. *        Special code for 8 x 8 Householder
  254. *
  255.          V1 = DCONJG( V( 1 ) )
  256.          T1 = TAU*DCONJG( V1 )
  257.          V2 = DCONJG( V( 2 ) )
  258.          T2 = TAU*DCONJG( V2 )
  259.          V3 = DCONJG( V( 3 ) )
  260.          T3 = TAU*DCONJG( V3 )
  261.          V4 = DCONJG( V( 4 ) )
  262.          T4 = TAU*DCONJG( V4 )
  263.          V5 = DCONJG( V( 5 ) )
  264.          T5 = TAU*DCONJG( V5 )
  265.          V6 = DCONJG( V( 6 ) )
  266.          T6 = TAU*DCONJG( V6 )
  267.          V7 = DCONJG( V( 7 ) )
  268.          T7 = TAU*DCONJG( V7 )
  269.          V8 = DCONJG( V( 8 ) )
  270.          T8 = TAU*DCONJG( V8 )
  271.          DO 160 J = 1, N
  272.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  273.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  274.      $            V7*C( 7, J ) + V8*C( 8, J )
  275.             C( 1, J ) = C( 1, J ) - SUM*T1
  276.             C( 2, J ) = C( 2, J ) - SUM*T2
  277.             C( 3, J ) = C( 3, J ) - SUM*T3
  278.             C( 4, J ) = C( 4, J ) - SUM*T4
  279.             C( 5, J ) = C( 5, J ) - SUM*T5
  280.             C( 6, J ) = C( 6, J ) - SUM*T6
  281.             C( 7, J ) = C( 7, J ) - SUM*T7
  282.             C( 8, J ) = C( 8, J ) - SUM*T8
  283.   160    CONTINUE
  284.          GO TO 410
  285.   170    CONTINUE
  286. *
  287. *        Special code for 9 x 9 Householder
  288. *
  289.          V1 = DCONJG( V( 1 ) )
  290.          T1 = TAU*DCONJG( V1 )
  291.          V2 = DCONJG( V( 2 ) )
  292.          T2 = TAU*DCONJG( V2 )
  293.          V3 = DCONJG( V( 3 ) )
  294.          T3 = TAU*DCONJG( V3 )
  295.          V4 = DCONJG( V( 4 ) )
  296.          T4 = TAU*DCONJG( V4 )
  297.          V5 = DCONJG( V( 5 ) )
  298.          T5 = TAU*DCONJG( V5 )
  299.          V6 = DCONJG( V( 6 ) )
  300.          T6 = TAU*DCONJG( V6 )
  301.          V7 = DCONJG( V( 7 ) )
  302.          T7 = TAU*DCONJG( V7 )
  303.          V8 = DCONJG( V( 8 ) )
  304.          T8 = TAU*DCONJG( V8 )
  305.          V9 = DCONJG( V( 9 ) )
  306.          T9 = TAU*DCONJG( V9 )
  307.          DO 180 J = 1, N
  308.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  309.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  310.      $            V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
  311.             C( 1, J ) = C( 1, J ) - SUM*T1
  312.             C( 2, J ) = C( 2, J ) - SUM*T2
  313.             C( 3, J ) = C( 3, J ) - SUM*T3
  314.             C( 4, J ) = C( 4, J ) - SUM*T4
  315.             C( 5, J ) = C( 5, J ) - SUM*T5
  316.             C( 6, J ) = C( 6, J ) - SUM*T6
  317.             C( 7, J ) = C( 7, J ) - SUM*T7
  318.             C( 8, J ) = C( 8, J ) - SUM*T8
  319.             C( 9, J ) = C( 9, J ) - SUM*T9
  320.   180    CONTINUE
  321.          GO TO 410
  322.   190    CONTINUE
  323. *
  324. *        Special code for 10 x 10 Householder
  325. *
  326.          V1 = DCONJG( V( 1 ) )
  327.          T1 = TAU*DCONJG( V1 )
  328.          V2 = DCONJG( V( 2 ) )
  329.          T2 = TAU*DCONJG( V2 )
  330.          V3 = DCONJG( V( 3 ) )
  331.          T3 = TAU*DCONJG( V3 )
  332.          V4 = DCONJG( V( 4 ) )
  333.          T4 = TAU*DCONJG( V4 )
  334.          V5 = DCONJG( V( 5 ) )
  335.          T5 = TAU*DCONJG( V5 )
  336.          V6 = DCONJG( V( 6 ) )
  337.          T6 = TAU*DCONJG( V6 )
  338.          V7 = DCONJG( V( 7 ) )
  339.          T7 = TAU*DCONJG( V7 )
  340.          V8 = DCONJG( V( 8 ) )
  341.          T8 = TAU*DCONJG( V8 )
  342.          V9 = DCONJG( V( 9 ) )
  343.          T9 = TAU*DCONJG( V9 )
  344.          V10 = DCONJG( V( 10 ) )
  345.          T10 = TAU*DCONJG( V10 )
  346.          DO 200 J = 1, N
  347.             SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  348.      $            V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  349.      $            V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
  350.      $            V10*C( 10, J )
  351.             C( 1, J ) = C( 1, J ) - SUM*T1
  352.             C( 2, J ) = C( 2, J ) - SUM*T2
  353.             C( 3, J ) = C( 3, J ) - SUM*T3
  354.             C( 4, J ) = C( 4, J ) - SUM*T4
  355.             C( 5, J ) = C( 5, J ) - SUM*T5
  356.             C( 6, J ) = C( 6, J ) - SUM*T6
  357.             C( 7, J ) = C( 7, J ) - SUM*T7
  358.             C( 8, J ) = C( 8, J ) - SUM*T8
  359.             C( 9, J ) = C( 9, J ) - SUM*T9
  360.             C( 10, J ) = C( 10, J ) - SUM*T10
  361.   200    CONTINUE
  362.          GO TO 410
  363.       ELSE
  364. *
  365. *        Form  C * H, where H has order n.
  366. *
  367.          GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
  368.      $           370, 390 )N
  369. *
  370. *        Code for general N
  371. *
  372. *        w := C * v
  373. *
  374.          CALL ZGEMV( 'No transpose', M, N, ONE, C, LDC, V, 1, ZERO,
  375.      $               WORK, 1 )
  376. *
  377. *        C := C - tau * w * v'
  378. *
  379.          CALL ZGERC( M, N, -TAU, WORK, 1, V, 1, C, LDC )
  380.          GO TO 410
  381.   210    CONTINUE
  382. *
  383. *        Special code for 1 x 1 Householder
  384. *
  385.          T1 = ONE - TAU*V( 1 )*DCONJG( V( 1 ) )
  386.          DO 220 J = 1, M
  387.             C( J, 1 ) = T1*C( J, 1 )
  388.   220    CONTINUE
  389.          GO TO 410
  390.   230    CONTINUE
  391. *
  392. *        Special code for 2 x 2 Householder
  393. *
  394.          V1 = V( 1 )
  395.          T1 = TAU*DCONJG( V1 )
  396.          V2 = V( 2 )
  397.          T2 = TAU*DCONJG( V2 )
  398.          DO 240 J = 1, M
  399.             SUM = V1*C( J, 1 ) + V2*C( J, 2 )
  400.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  401.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  402.   240    CONTINUE
  403.          GO TO 410
  404.   250    CONTINUE
  405. *
  406. *        Special code for 3 x 3 Householder
  407. *
  408.          V1 = V( 1 )
  409.          T1 = TAU*DCONJG( V1 )
  410.          V2 = V( 2 )
  411.          T2 = TAU*DCONJG( V2 )
  412.          V3 = V( 3 )
  413.          T3 = TAU*DCONJG( V3 )
  414.          DO 260 J = 1, M
  415.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
  416.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  417.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  418.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  419.   260    CONTINUE
  420.          GO TO 410
  421.   270    CONTINUE
  422. *
  423. *        Special code for 4 x 4 Householder
  424. *
  425.          V1 = V( 1 )
  426.          T1 = TAU*DCONJG( V1 )
  427.          V2 = V( 2 )
  428.          T2 = TAU*DCONJG( V2 )
  429.          V3 = V( 3 )
  430.          T3 = TAU*DCONJG( V3 )
  431.          V4 = V( 4 )
  432.          T4 = TAU*DCONJG( V4 )
  433.          DO 280 J = 1, M
  434.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  435.      $            V4*C( J, 4 )
  436.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  437.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  438.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  439.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  440.   280    CONTINUE
  441.          GO TO 410
  442.   290    CONTINUE
  443. *
  444. *        Special code for 5 x 5 Householder
  445. *
  446.          V1 = V( 1 )
  447.          T1 = TAU*DCONJG( V1 )
  448.          V2 = V( 2 )
  449.          T2 = TAU*DCONJG( V2 )
  450.          V3 = V( 3 )
  451.          T3 = TAU*DCONJG( V3 )
  452.          V4 = V( 4 )
  453.          T4 = TAU*DCONJG( V4 )
  454.          V5 = V( 5 )
  455.          T5 = TAU*DCONJG( V5 )
  456.          DO 300 J = 1, M
  457.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  458.      $            V4*C( J, 4 ) + V5*C( J, 5 )
  459.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  460.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  461.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  462.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  463.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  464.   300    CONTINUE
  465.          GO TO 410
  466.   310    CONTINUE
  467. *
  468. *        Special code for 6 x 6 Householder
  469. *
  470.          V1 = V( 1 )
  471.          T1 = TAU*DCONJG( V1 )
  472.          V2 = V( 2 )
  473.          T2 = TAU*DCONJG( V2 )
  474.          V3 = V( 3 )
  475.          T3 = TAU*DCONJG( V3 )
  476.          V4 = V( 4 )
  477.          T4 = TAU*DCONJG( V4 )
  478.          V5 = V( 5 )
  479.          T5 = TAU*DCONJG( V5 )
  480.          V6 = V( 6 )
  481.          T6 = TAU*DCONJG( V6 )
  482.          DO 320 J = 1, M
  483.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  484.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
  485.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  486.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  487.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  488.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  489.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  490.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  491.   320    CONTINUE
  492.          GO TO 410
  493.   330    CONTINUE
  494. *
  495. *        Special code for 7 x 7 Householder
  496. *
  497.          V1 = V( 1 )
  498.          T1 = TAU*DCONJG( V1 )
  499.          V2 = V( 2 )
  500.          T2 = TAU*DCONJG( V2 )
  501.          V3 = V( 3 )
  502.          T3 = TAU*DCONJG( V3 )
  503.          V4 = V( 4 )
  504.          T4 = TAU*DCONJG( V4 )
  505.          V5 = V( 5 )
  506.          T5 = TAU*DCONJG( V5 )
  507.          V6 = V( 6 )
  508.          T6 = TAU*DCONJG( V6 )
  509.          V7 = V( 7 )
  510.          T7 = TAU*DCONJG( V7 )
  511.          DO 340 J = 1, M
  512.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  513.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  514.      $            V7*C( J, 7 )
  515.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  516.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  517.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  518.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  519.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  520.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  521.             C( J, 7 ) = C( J, 7 ) - SUM*T7
  522.   340    CONTINUE
  523.          GO TO 410
  524.   350    CONTINUE
  525. *
  526. *        Special code for 8 x 8 Householder
  527. *
  528.          V1 = V( 1 )
  529.          T1 = TAU*DCONJG( V1 )
  530.          V2 = V( 2 )
  531.          T2 = TAU*DCONJG( V2 )
  532.          V3 = V( 3 )
  533.          T3 = TAU*DCONJG( V3 )
  534.          V4 = V( 4 )
  535.          T4 = TAU*DCONJG( V4 )
  536.          V5 = V( 5 )
  537.          T5 = TAU*DCONJG( V5 )
  538.          V6 = V( 6 )
  539.          T6 = TAU*DCONJG( V6 )
  540.          V7 = V( 7 )
  541.          T7 = TAU*DCONJG( V7 )
  542.          V8 = V( 8 )
  543.          T8 = TAU*DCONJG( V8 )
  544.          DO 360 J = 1, M
  545.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  546.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  547.      $            V7*C( J, 7 ) + V8*C( J, 8 )
  548.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  549.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  550.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  551.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  552.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  553.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  554.             C( J, 7 ) = C( J, 7 ) - SUM*T7
  555.             C( J, 8 ) = C( J, 8 ) - SUM*T8
  556.   360    CONTINUE
  557.          GO TO 410
  558.   370    CONTINUE
  559. *
  560. *        Special code for 9 x 9 Householder
  561. *
  562.          V1 = V( 1 )
  563.          T1 = TAU*DCONJG( V1 )
  564.          V2 = V( 2 )
  565.          T2 = TAU*DCONJG( V2 )
  566.          V3 = V( 3 )
  567.          T3 = TAU*DCONJG( V3 )
  568.          V4 = V( 4 )
  569.          T4 = TAU*DCONJG( V4 )
  570.          V5 = V( 5 )
  571.          T5 = TAU*DCONJG( V5 )
  572.          V6 = V( 6 )
  573.          T6 = TAU*DCONJG( V6 )
  574.          V7 = V( 7 )
  575.          T7 = TAU*DCONJG( V7 )
  576.          V8 = V( 8 )
  577.          T8 = TAU*DCONJG( V8 )
  578.          V9 = V( 9 )
  579.          T9 = TAU*DCONJG( V9 )
  580.          DO 380 J = 1, M
  581.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  582.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  583.      $            V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
  584.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  585.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  586.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  587.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  588.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  589.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  590.             C( J, 7 ) = C( J, 7 ) - SUM*T7
  591.             C( J, 8 ) = C( J, 8 ) - SUM*T8
  592.             C( J, 9 ) = C( J, 9 ) - SUM*T9
  593.   380    CONTINUE
  594.          GO TO 410
  595.   390    CONTINUE
  596. *
  597. *        Special code for 10 x 10 Householder
  598. *
  599.          V1 = V( 1 )
  600.          T1 = TAU*DCONJG( V1 )
  601.          V2 = V( 2 )
  602.          T2 = TAU*DCONJG( V2 )
  603.          V3 = V( 3 )
  604.          T3 = TAU*DCONJG( V3 )
  605.          V4 = V( 4 )
  606.          T4 = TAU*DCONJG( V4 )
  607.          V5 = V( 5 )
  608.          T5 = TAU*DCONJG( V5 )
  609.          V6 = V( 6 )
  610.          T6 = TAU*DCONJG( V6 )
  611.          V7 = V( 7 )
  612.          T7 = TAU*DCONJG( V7 )
  613.          V8 = V( 8 )
  614.          T8 = TAU*DCONJG( V8 )
  615.          V9 = V( 9 )
  616.          T9 = TAU*DCONJG( V9 )
  617.          V10 = V( 10 )
  618.          T10 = TAU*DCONJG( V10 )
  619.          DO 400 J = 1, M
  620.             SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  621.      $            V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  622.      $            V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
  623.      $            V10*C( J, 10 )
  624.             C( J, 1 ) = C( J, 1 ) - SUM*T1
  625.             C( J, 2 ) = C( J, 2 ) - SUM*T2
  626.             C( J, 3 ) = C( J, 3 ) - SUM*T3
  627.             C( J, 4 ) = C( J, 4 ) - SUM*T4
  628.             C( J, 5 ) = C( J, 5 ) - SUM*T5
  629.             C( J, 6 ) = C( J, 6 ) - SUM*T6
  630.             C( J, 7 ) = C( J, 7 ) - SUM*T7
  631.             C( J, 8 ) = C( J, 8 ) - SUM*T8
  632.             C( J, 9 ) = C( J, 9 ) - SUM*T9
  633.             C( J, 10 ) = C( J, 10 ) - SUM*T10
  634.   400    CONTINUE
  635.          GO TO 410
  636.       END IF
  637.   410 CONTINUE
  638.       RETURN
  639. *
  640. *     End of ZLARFX
  641. *
  642.       END
  643.